_____ _    _         _____  _____ _   _          _____   _____  
    / ____| |  | |  /\   |  __ \|_   _| \ | |   /\   / _ \ \ / / _ \ 
   | |  __| |  | | /  \  | |__) | | | |  \| |  /  \ | | | \ V / | | |
   | | |_ | |  | |/ /\ \ |  _  /  | | | . ` | / /\ \| | | |> <| | | |
   | |__| | |__| / ____ \| | \ \ _| |_| |\  |/ ____ \ |_| / . \ |_| |
    \_____|\____/_/    \_\_|  \_\_____|_| \_/_/    \_\___/_/ \_\___/ 
                                                                     
                    ./Guarina0x0
Titulo: TryHackMe - Road
Fecha: 29-11-2021
Descripcion: Enumeracion - HTTP - Burp Suite - MongoDB

TryHackMe - Road Writeup

## Ping:

ping -c1 10.10.235.69

Mediante el comando ping vamos a trazar una ruta ICMP para ver si la maquina esta activa y ante que tipo de sistema operativo estamos

Podemos ver que la respuesta del ttl es 63 , el TTL en maquinas Linux es 64 y en maquinas Windows 128 , en este caso es 63 porque pasa por un nodo intermediario.

## Enumeracion :

Ahora vamos a proceder a ver que servicios tiene esta maquina abiertos para ello vamos a realizar una enumeracion de puertos:

Mediante el parametro --min-rate 5000 va a emitir paquetes no mas lento que 5000 paquetes por segundo

  • Puerto 22 SSH
  • Puerto 80 HTTP
  • Ahora vamos aplicar una enumeracion de puertos mas exhaustiva , aplicando scripts basicos para determinar la version y servicio que corren en los puertos activos.

    Mediante la herramienta WhatWeb vamos a inspeccionar un poco mas el servicio HTTP en busca de algun CMS o alguna redireccion

    No vemos gran cosa , por lo que vamos abrir la pagina web y proceder a inspeccionarla

    ## Enumeracion Web:

    Como no encontramos nada interesante vamos a tirar de la tecnica Fuzzing , para buscar directorios web aplicando fuerza bruta mediante la herramienta Wfuzz

    Nos va a reportar un directorio llamado /v2 , el cual contiene un panel de autentificacion , actualmente no disponemos de credenciales validas, pero podemos registrarnos

    Por lo que vamos a registrarnos en el sistema con unas credenciales inventadas

    En los primeros intentos la maquina al ser reciente contaba con un error en la parte de backend cuando se conectaba a la base de datos para registrar el usuario

    Tras esperarme un dia ya funcionaba el servicio y tenemos acceso al panel mediante las credenciales registradas anteriormente

    Tras un rato investigando el panel , nos encontramos ante un apartado de Perfil , donde encontramos el correo del administrador del sistema

    Podemos pensar en realizar un secuestro del correo , tenemos un apartado para cambiar la contraseña del usuario registrado teniendo la contraseña anterior , podemos intentar poner mi usuario y mis credenciales y capturar la peticion mediante Burp Suite y cambiar mi usuario por el de administrador

    Asi podremos cambiar la contraseña del usuario Administrador y tendremos acceso a la parte de subir ficheros

    Por lo que vamos a realizar el ataque

    Activamos nuestro proxy para nuestro Burp Suite actue de intermediario entre el Cliente y el Servidor

    Podemos ver que tenemos el campo del correo nuestro , el que vamos a cambiar por el correo del administrador

    Ahora ya solo nos queda enviar la peticion y ingresar con las credenciales que hemos cambiado al usuario Administrador

    Ahora vamos a crear una shell reversa en php y la vamos a proceder a subir mediante el campo que tenemos en el apartado Perfil

    Si capturamos esa peticion de subida mediante Burp Suite vamos a ver que se sube al directorio web /v2/profileimages

    Tiene deshabilitado la opcion de listado de contenido , por lo que tenemos que poner el fichero en cuestion en este caso reverse.php y ponernos a la escucha mediante NetCat por el puerto configurado en la shell reversa

    ## Escalada de Privilegios:

    Actualmente tenemos una shell como el usuario www-data , y tenemos que conseguir una shell como el usuario Root para obtener el flag

    Si nos vamos al directorio del usuario vamos a poder listar el flag de user.txt

    Mediante la enumeracion del sistema en busqueda de algun proceso que nos ayude a escalar privilegios , nos encontramos con el proceso de ejecucion de MongoDB

    Si entramos dentro del cliente de MongoDB , vamos a ver que tipo de contenido tiene y nos reporta 4 tablas interesantes que iremos enumerando la informacion que contienen

    Y en la tabla User contiene un campo con credenciales del usuario "Developer" usuario del sistema

    Realizamos un pivoting de Usuario mediante el servicio SSH que teniamos abierto , y ahora ya como el usuario Developer tenemos la ejecucion de un proceso como Root que se puede explotar llamado LD_Reload

    LD_Reload Exploit

    Crearemos una shell en C:

    #include #include #include void _init() { unsetenv("LD_PRELOAD"); setgid(0); setuid(0); system("/bin/sh"); }

    Ahora procedemos a compilar el fichero y ejecutarlo y ya tendremos una shell como Root

    gcc -fPIC -shared -o shell.so shell.c -nostartfiles sudo LD_PRELOAD=/tmp/shell.so find

    Y tendriamos terminada la maquina Road , de TryhackMe con una dificultad de Media!